<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="util.*"%>
<%@page import="entidades.*"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.LinkedList"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.ArrayList"%>

<html>
<head>

<%@ include file="jspf/head.jspf" %>

<script type="text/javascript" src="js/ListaOT.js"></script>
<script type="text/javascript" src="js/sp/planificacion-newlong.js"></script>
<link rel="stylesheet" type="text/css" href="css/lista-ordenes.css"/>

</head>
<body>

<%@ include file="jspf/header.jspf" %>

<%
String accion = (request.getParameter("accion") != null)? request.getParameter("accion") : "";
String accionBis = (request.getParameter("accion_bis") != null)? request.getParameter("accion_bis") : "";

// Obtengo los valores de los filtros.
int newlong = 0;
int pais = 0;
try{ newlong = Integer.parseInt(request.getParameter("f-newlong")); }catch(Exception e) {}
try{ pais = Integer.parseInt(request.getParameter("f-pais")); }catch(Exception e) {}

Date fecha1 = Util.parseDate(request.getParameter("f-fecha1"));
Date fecha2 = Util.parseDate(request.getParameter("f-fecha2"));
if(fecha1 == null && accion.compareTo("filtrar") != 0)
		{
		fecha1 = new Date();
		fecha2 = new Date(fecha1.getTime() + 86400000L*30L);
		}

Boolean[] impresion = new Boolean[3];
Boolean[] confeccion = new Boolean[3];
impresion[0] = true;
impresion[1] = true;
impresion[2] = true;
confeccion[0] = false;
confeccion[1] = true;
confeccion[2] = false;
// Verifico si debo reprogramar una orden.
if(accionBis.compareTo("reprogramar") == 0)
	{
	int ordenId = Util.parseInt(request.getParameter("orden_id"));
	int cicloId = Util.parseInt(request.getParameter("ciclo_nuevo"));

	if(ordenId > 0 && cicloId > 0)
		{
		OrdenTrabajo ot = new OrdenTrabajo(ordenId);
		ot.setCicloNewlongId(cicloId);
		ot.setCicloNewlongTurno(0);
		ot.guardar();
		}
	}

if(accion.compareTo("confeccionar") != 0)
	{
        List<String> idsSelected = new ArrayList<String>();
        Iterator it = request.getParameterMap().keySet().iterator();
        while (it.hasNext()){
              String parametro = (String) it.next();
              if (parametro.substring(0, 3).equals("ot_")){
                  idsSelected.add(parametro.substring(3, parametro.length()));
               }
        }
        Iterator itIds = idsSelected.iterator();
        while (itIds.hasNext()){
                String id = (String) itIds.next();
                OrdenTrabajo ot = OrdenTrabajo.buscarById(id);
                if (request.getParameterMap().containsKey("cn_" + ot.getCicloNewlong().getId())){
                    ot.setEstadoId(EstadoTrabajo.CONFECCIONADO);
                }
                String cantStr = request.getParameter("cant_" + id);
                long cantidad = Long.parseLong(cantStr);
                if (ot.getCantidad() >= cantidad){
                    ot.setCantidad(ot.getCantidad() - cantidad);
                }
		ot.guardar();
         }

        /*Recalculo Acarreo para ciclos newlong*/
        ControlDeCiclosNewlong control = new ControlDeCiclosNewlong();
        control.recalcularAcarreoDeCiclos();
        
	}
String ids = "";
String idsPlanificados = "";
%>

<br/>

<h1>Partes de trabajo</h1>

<br/>

<div id="div_ciclos">

<!-- Tabla de filtros -->
<form action="" method="get" id="form_filtros">
	<input type="hidden" name="accion" value="filtro"/>

	<center><table class="filtros">
		<tr>
			<td align="right">Fecha:</td>
			<td align="left">
				<input type="text" name="f-fecha1" class="fecha" size="11" value="<%= Util.format(fecha1, "dd/MM/yyyy") %>"/>
				y
				<input type="text" name="f-fecha2" class="fecha" size="11" value="<%= Util.format(fecha2, "dd/MM/yyyy") %>"/>
			</td>
		</tr>
		<tr>
			<td align="right">Newlong:</td>
			<td align="left">
				<select name="f-newlong">
					<option value="0">Todas</option>
					<% {
					List<Newlong> newlongs = Newlong.listar();
					for(int i=0; i<newlongs.size(); i++)
						{ %>
						<option value="<%= newlongs.get(i).getId() %>" <%= (newlong == newlongs.get(i).getId())? "selected" : "" %>><%= newlongs.get(i).getDescripcion() %></option>
						<% }
					} %>
				</select>
			</td>
		</tr>
		<tr>
			<td align="right">Pais:</td>
			<td align="left">
				<select name="f-pais">
					<option value="">Todos</option>
				<% {
				List<Pais> paises = Pais.listar();
				for(int p=0; p<paises.size(); p++)
					{%><option value="<%= paises.get(p).getId() %>" <%= (paises.get(p).getId() == pais)? "selected=\"selected\"" : "" %>><%= paises.get(p).getNombre() %></option><%}
				} %>
				</select>
			</td>
		</tr>
		<tr>
			<td colspan="2">
				<div style="float:left">
					<button name="exportar"><img src="icon/excel.png" alt="" title="Exportar"/> <span>Exportar</span></button>
				</div>
				<div style="float:right">
					<button name="buscar"><img src="icon/find.png" alt="" title="Buscar"/> <span>Buscar ciclos</span></button>
				</div>
				<div style="clear:both"></div>
			</td>
		</tr>
	</table></center>
</form>

<br/>

<!-- Tabla con los resultados separados por Newlong -->
<center><table>
	<tr>
<% {
List<Newlong> newlongs = Newlong.listar();

for(int u=0; u<newlongs.size(); u++)
	{
	if((newlong == 0 || newlongs.get(u).getId() == newlong) && (pais == 0 || newlongs.get(u).getPaisId() == pais))
		{ %>
	<td valign="top">
		<h2><%= newlongs.get(u).getDescriptor() %></h2>

		<br/>

		<form action="" method="post" class="newlong" id="form_newlong_<%= newlongs.get(u).getId() %>">
		<input type="hidden" name="newlong" value="<%= newlongs.get(u).getId() %>"/>

		<center>
		<table class="planificacion">
			<tr>
				<td align="center">
					<div>Fecha inicio</div>
					<div><input type="text" name="fecha_inicio" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Fecha fin</div>
					<div><input type="text" name="fecha_fin" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Capacidad</div>
					<div><input type="text" name="capacidad" size="11" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Seleccionado</div>
					<div><input type="text" name="bolsas" size="11" readonly="readonly" value=""/></div>
				</td>
				<td valign="bottom"><button name="confeccionar"><img src="icon/plan.png" alt="" title="Confeccionado"/> <span>Confeccionado</span></button></td>
			</tr>
		</table>
		</center>

		<br/>

		<table class="resultados programacion">
			<thead>
				<tr class="titulo orden">
					<th></th>
					<th>Orden</th>
					<th>WO</th>
					<th>Logotipo</th>
					<th>Formato</th>
					<th>Papel</th>
					<th>Manija</th>
					<th>Inicio confección</th>
					<th>Fin confección</th>
					<th>Fecha prometida</th>
					<th>Bolsas</th>
                                        <th>Baja</th>
					<th>Estado</th>
					<th></th>
				</tr>
			</thead>
		<%
		List<CicloNewlong> ciclos = CicloNewlong.listar(newlongs.get(u).getId(), fecha1, fecha2, false, impresion, confeccion);

		for(int c=0,n=ciclos.size(); c<n; c++)
			{

			CicloNewlong cu = ciclos.get(c);
			// Segun si el ciclo esta planificado o no, cambio el color de fondo.
			if (!CicloNewlong.tieneTodosConfeccionado(cu)){
                            String clases = "";
                            if(cu.isPlanificado()) clases += "planificado ";
                            if(cu.isBloqueado()) clases += "bloqueado ";

			// Imprimo la cabecera del ciclo.
                            String nombre = "<strong>Ciclo " + cu.getNumero() + "</strong> - Fechas: "+cu.getFechaInicioToString()+" - "+cu.getFechaFinToString()+" - Disponible: "+Util.numero.format(cu.getCantidadDisponible()) + " de "+Util.numero.format(cu.getCapacidad())+" ("+cu.getPorcentajeDisponible()+"%)";
			%>
			<tbody>
				<tr class="ciclo <%= clases %>">
                                        <td></td>
                                        <td><a href="ciclos-newlong-edit.jsp?id=<%= cu.getId() %>" title="Editar"><img src="icon/edit.png" alt="Editar"/></a></td>
					<td colspan="<%= 10 %>"><%= nombre %></td>
					<td><%= Html.getIconosEstadoCiclo(cu) %></td>
					<td>
						<% if(cu.isPlanificado()) { %>
						<input type="checkbox" class="checkbox_cn"
							   name="cn_<%= cu.getId() %>"
							   value="<%= cu.getId() %>"
							   data-fechaInicio="<%= cu.getFechaHoraInicioToString() %>"
							   data-fechaFin="<%= cu.getFechaHoraFinToString() %>"
							   data-capacidad="<%= cu.getCapacidad() %>"
							   data-asignado="<%= cu.getCantidadAsignada() %>"
							   data-bloqueado="<%= cu.isBloqueado() %>"/>
						<% } %>
					</td>
				</tr>
			<%
			// Imprimo las ordenes de trabajo.
			List<OrdenTrabajo> ordenes = OrdenTrabajo.listarCicloNewlong(cu,impresion,confeccion);

			for(int o=0,m=ordenes.size(); o<m; o++)
				{
				OrdenTrabajo ot = ordenes.get(o);
                                if (ot.getEstadoId() != EstadoTrabajo.CONFECCIONADO){
				// Agrego el id de la orden a las lista de id's.
                                    if(! ids.contains(newlongs.get(u).getDescripcion()))
					{
					if(ids.length() != 0) ids += ";";
					ids += newlongs.get(u).getDescripcion() + ":";
					}
                                    else
					{ ids += ","; }
                                    ids += ot.getId();

                                    // Agrego el id de la orden a las lista de id's planificados.
                                    if(cu.isPlanificado())
					{
					if(!idsPlanificados.contains(newlongs.get(u).getDescripcion()))
						{
						if(idsPlanificados.length() != 0) ids += ";";
						idsPlanificados += newlongs.get(u).getDescripcion() + ":";
						}
					else
						{ idsPlanificados += ","; }
					idsPlanificados += ot.getId();
					}

                                    String clase = "";
                                    if(ot.getEstadoId() == EstadoTrabajo.PENDIENTE) clase = "pendiente";
                                    if(ot.getEstadoId() == EstadoTrabajo.IMPRESO) clase = "impreso";
                                    if(ot.getEstadoId() == EstadoTrabajo.CONFECCIONADO) clase = "confeccionado";
                                    if(!ot.validarEstados()) clase += " advertencia";
				%>
				<tr class="orden <%= clase %>">
					<td>
						<% if(ot.getEstadoId() <= EstadoTrabajo.IMPRESO || cu.isBloqueado()) { %>
						<a href="ordenes-trabajo-edit.jsp?id=<%= ot.getId() %>" class="reprogramar" title="Reprogramar"
						   data-id="<%= ot.getId() %>"
						   data-cicloId="<%= ot.getCicloNewlongId() %>"
						   data-info="<%= ot.getCicloNewlong().getNewlong().getDescripcion() + " - Ciclo " + ot.getCicloNewlong().getNumero() %>">
							<img src="icon/config.png" alt="Editar"/>
						</a>
						<% } %>
					</td>
					<td><%= ot.getCicloNewlongTurno() %></td>
					<td><%= ot.getIdentificador() %></td>
					<td><%= ot.getOrdenVenta().getLogotipo() %></td>
					<td><%= ot.getFormato() %></td>
					<td><%= ot.getOrdenVenta().getTipoPapel() %></td>
					<td><%= ot.getOrdenVenta().getManija() %></td>
					<td><%= ot.getCicloNewlongInicioToString() %></td>
					<td><%= ot.getCicloNewlongFinToString() %></td>
					<td><%= ot.getFechaPrometidaToString() %></td>
					<td><%= Util.numero.format(ot.getCantidad()) %></td>
					<td><input type="text" name ="cant_<%= ot.getId() %>"  class="act_uteco"  size="5" value="<%= ot.getCantidad() %>"/></td>
                                        <td align="center">
						<%= Html.getIconoEstadoOrden(ot.getEstadoImpresion()) %>
						<%= Html.getIconoEstadoOrden(ot.getEstadoConfeccion()) %>
					</td>
					<td>
						<%
						if(cu.isPlanificado())
							{
							String info = "Orden " + ot.getIdentificador() + " - Bolsas: " + ot.getCantidad() + " - " + ot.getFormato();
							%>
							<input type="checkbox" class="checkbox_ot"
								   name="ot_<%= ot.getId() %>"
								   value="<%= ot.getId() %>"
								   data-identificador="<%= ot.getIdentificador() %>"
								   data-bolsas="<%= ot.getCantidad() %>"
								   data-formato="<%= ot.getFormato() %>"
								   data-tipoPapel="<%= ot.getOrdenVenta().getTipoPapel() %>"
								   data-cicloId="<%= ot.getCicloNewlongId() %>"
								   data-cicloNumero="<%= ot.getCicloNewlong().getNumero() %>"
								   data-newlong="<%= ot.getCicloNewlong().getNewlong() %>"
								   data-manija="<%= ot.getOrdenVenta().getManija() %>"
								   data-logotipo="<%= ot.getOrdenVenta().getLogotipo() %>"
								   data-fechaPrometida="<%= ot.getFechaPrometidaToString() %>"
								   data-info="<%= info %>"/>
							<% }
						%>
					</td>
				</tr>
				<%
				}
                             }
			%></tbody><%
                          }
			}// cierra for
		%>
		</table>
		</form>
		</td>
		<%
		}
	}
} %>
	</tr>
</table></center>

</div>
<!-- Formulario para reprogramar pedidos -->
<div id="div_reprogramacion" title="Reprogramar orden de trabajo">
	<form action="" method="post" id="form_reprogramacion">
		<input type="hidden" name="accion_bis" value="reprogramar"/>
		<input type="hidden" name="orden_id" value=""/>

		<table class="formulario" style="width:100%;">
			<tr>
				<td class="label">Ciclo actual</td>
				<td class="input"><input type="text" name="ciclo_actual" value="" readonly="readonly"/></td>
			</tr>
			<tr>
				<td class="label">Ciclos posibles</td>
				<td class="input" id="td_reprogramacion_ciclos"></td>
			</tr>
			<tr>
				<td align="left"><button name="cancelar"><img src="icon/stop.png" alt="" title="Cancelar"/> <span>Cancelar</span></button></td>
				<td align="right"><button name="guardar"><img src="icon/save.png" alt="" title="Reprogramar"/> <span>Reprogramar</span></button></td>
			</tr>
		</table>
	</form>
</div>



<!-- Formulario para invocar al Servlet que crea el Excel -->
<form action="Excel" method="post" id="form_excel">
	<input type="hidden" name="tipo" value="programacion"/>
	<input type="hidden" name="ids" value="<%= ids %>"/>
	<input type="hidden" name="ids_planificados" value="<%= idsPlanificados %>"/>
</form>

<div id="div_excel_confirmacion" title="Exportación a Excel">
	¿Desea exportar todos los ciclos o solo aquellos que se encuentran planificados?
</div>

<%@ include file="jspf/footer.jspf" %>

</body>
</html>

